package array

// TakeWhile 从array数组的起始元素开始提取元素，，直到 predicate 返回假值。predicate 会传入三个参数： (value, index, array)。
func TakeWhile(array []T, predicate func(value T, index int, array []T) bool) []T {
	var ret []T
	var take = true
	for index, value := range array {
		take = predicate(value, index, array)
		if take {
			ret = append(ret, value)
		} else {
			break
		}
	}
	return ret
}
